JUnit 5 ile Java Birim Testi Yazma (Maven Örneği)
Bu rehberde JUnit 5 kullanarak Java projelerinde birim testlerin nasıl yazıldığını, Maven bağımlılığı ekleme ve örnek bir test sınıfı üzerinden adım adım anlatıyoruz.
@Test, @BeforeEach ve assertEquals kullanarak
basit bir DAO test senaryosu oluşturacağız.
Java backend geliştirme öğrenmek istiyorsanız Spring Boot CRUD örnekleri yazımıza da göz atabilirsiniz.
JUnit Nedir?
JUnit, Java projelerinde otomatik testler yazmak için kullanılan en popüler test frameworklerinden biridir. Manuel testlerde geliştiriciler uygulamayı elle test ederken, JUnit ile bu işlemler otomatik ve tekrar edilebilir hale gelir.
JUnit sayesinde uygulamanızdaki fonksiyonların doğru çalışıp çalışmadığını test edebilir ve hataları erken aşamada tespit edebilirsiniz.
JUnit içerisinde en sık kullanılan anotasyonlardan bazıları şunlardır:
@Test→ Test metodunu belirtir@BeforeEach→ Her testten önce çalışır@AfterEach→ Test sonrası çalışırAssertions→ Beklenen sonuçları kontrol eder
JUnit 5 Maven Bağımlılığı
Projenizde Maven kullanıyorsanız pom.xml dosyanıza aşağıdaki bağımlılığı eklemeniz gerekir.
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.6.0</version>
<scope>test</scope>
</dependency>
Alternatif olarak JUnit jar dosyasını manuel olarak indirip projenizin lib klasörüne ekleyebilirsiniz.
JUnit Test Örneği
Aşağıdaki örnekte MalzemeDao sınıfı için basit bir veritabanı kayıt testi oluşturulmuştur.
MalzemeDaoTest.java
import static org.junit.Assert.assertEquals;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import dao.MalzemeDao;
import entities.Malzeme;
import java.sql.SQLException;
class MalzemeDaoTest {
MalzemeDao malzemeDao;
@BeforeEach
void setUp() {
malzemeDao = new MalzemeDao();
}
@Test
public void testInsertKayit() throws SQLException {
Malzeme data = new Malzeme();
data.setAciklama("Malzeme açıklama");
data.setAdet(2);
data.setDurum(0);
data.setGarantiSuresi("2022/05/30");
data.setId(3);
data.setMalzeme_adi("Malzeme Adi");
data.setMarka("Apple marka");
boolean beklenen = true;
assertEquals(beklenen, malzemeDao.insertKayit(data));
}
}
DAO Sınıfı Örneği
Test edilen DAO metodunun örnek implementasyonu aşağıdaki gibidir:
private String INSERT_MALZEME_SQL =
"INSERT INTO malzeme.malzeme (malzeme_adi, durumu, aciklama, adet, marka, garanti_suresi) VALUES(?, ?, ?, ?, ?, ?);";
public boolean insertKayit(Malzeme malzeme) throws SQLException {
try {
Connection connection = ConnectDb.baglanDB();
PreparedStatement ps =
connection.prepareStatement(INSERT_MALZEME_SQL);
ps.setString(1, malzeme.getMalzeme_adi());
ps.setInt(2, malzeme.getDurum());
ps.setString(3, malzeme.getAciklama());
ps.setInt(4, malzeme.getAdet());
ps.setString(5, malzeme.getMarka());
ps.setString(6, malzeme.getGarantiSuresi());
ps.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
JUnit Testi Nasıl Çalıştırılır?
IDE üzerinden test çalıştırmak oldukça kolaydır.
Eclipse veya IntelliJ IDEA kullanıyorsanız aşağıdaki adımları izleyebilirsiniz:
Run → Run As → JUnit Test
Test başarıyla çalıştığında IDE içerisinde yeşil bar görünecektir.
Sık Sorulan Sorular
JUnit neden kullanılır?
JUnit ile hangi test türleri yazılabilir?
JUnit 4 ile JUnit 5 arasındaki fark nedir?
Sonuç
Bu yazıda JUnit 5 kullanarak Java projelerinde birim testlerin nasıl yazıldığını örnek bir DAO sınıfı üzerinden inceledik.
JUnit testleri sayesinde kod kalitesi artar, hatalar erken fark edilir ve uygulamanızın güvenilirliği önemli ölçüde yükselir.
Daha fazla Java içeriği için latestsoftwaredevelopers.com adresini ziyaret edebilirsiniz.
Kodların tamamına erişmek için: GitLab Projesi